#!/bin/bash
die () {
	echo >&2 "$@"
	exit 1
}

[ "$#" -eq 2 ] || die "Uso: ./testcomp.sh <path_oc2> <dir_absoluto_a_comprimir>"
[ -e "$1" ] || die "No existe el ejecutable llamado $1"
[ -d "$2" ] || die "No existe el directorio a comprimir llamado $2"

PATH_OC2=$1
DIR_IN=$2
DIR_OUT_BASE=/tmp/
DIR_OUT=$(echo "$2" | tr [/] [_])
DIR_OUT=$DIR_OUT_BASE$DIR_OUT
OLD_DIR=$PWD
cd "$2"

#No permitimos comprimir el directorio raiz, para evitar errores si se esta con root.
DIR_ABS=$(pwd)
echo ${DIR_ABS}
[ ${DIR_ABS} != "/" ]  || die "No se puede usar el directorio: / "

echo "Comprimiendo $2 en $DIR_OUT"

## Con esto recreamos la estructrura de directorios
echo "Creando estructura de directorios en ${DIR_OUT} ..."
find -type d -not -name '.' -printf "${DIR_OUT}/%P\n" | xargs mkdir -p

## Con esto comprimimos todo
echo "Comprimiendo en ${PWD} ..."
find -type f -exec "${PATH_OC2}" -c {} \;

echo "Moviendo archivos .oc2 a ${DIR_OUT} ..."
find -type f -name '*.oc2' -exec mv {} "${DIR_OUT}"/{} \;

echo "Descomprimiendo archivos en carpeta ${DIR_OUT} ..."
find "${DIR_OUT}" -type f -exec "${PATH_OC2}" -d {} \;

echo "Borrando archivos .oc2 en carpeta ${DIR_OUT} ..."
find "${DIR_OUT}" -type f -name '*.oc2' -exec rm -f {} \;

echo "Comparando directorios ${PWD} contra ${DIR_OUT} ..."
echo "Solo debería haber diferencia con los links, porque se escapan de la carpeta"
diff -q -r "${PWD}"/ "${DIR_OUT}"/

cd $OLD_DIR

echo "Fin script !!!"
echo "No olvidarse de borrar los archivos temporales de ${DIR_OUT}"

